package uno.linze.interview_question.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import lombok.Data;

/**
 * 用户AI模型API Key存储表（安全存储用户自定义AI Key）
 * @TableName user_ai_model_key
 */
@TableName(value ="user_ai_model_key")
@Data
public class UserAiModelKey {
    /**
     * 记录ID，主键，自增
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 关联用户ID，对应user表的id
     */
    private Integer userId;

    /**
     * AI模型标识（区分不同厂商/模型，如"openai-gpt-4"、"baidu-ernie-4"、"iflytek-spark-3"）
     */
    private String modelCode;

    /**
     * AI模型显示名（给用户看的友好名称，如"OpenAI GPT-4"）
     */
    private String modelName;

    /**
     * 加密后的API Key（严禁明文存储，需用AES/RSA等算法加密）
     */
    private String encryptedApiKey;

    /**
     * 加密算法（记录当前Key的加密方式，便于解密时匹配）
     */
    private String encryptionAlgorithm;

    /**
     * Key状态（1:启用，0:禁用，禁用后不用于AI调用）
     */
    private Integer status;

    /**
     * Key过期时间（若模型Key有有效期，过期后自动禁用）
     */
    private Date expireTime;

    /**
     * 用户备注（如"我的OpenAI付费Key"，便于用户区分多个Key）
     */
    private String remark;

    /**
     * 创建时间
     */
    private Date createdAt;

    /**
     * 更新时间（修改Key/状态时自动更新）
     */
    private Date updatedAt;
}